package com.inei.evaluaciondelaencuesta.model.dao;

import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.inei.evaluaciondelaencuesta.model.connection.UtilDB;

public class PersonaDao {

	// variables
	private UtilDB util;
	private SQLiteDatabase db;
	private Cursor cursor = null;
	private Context context;

	public PersonaDao(Context context) {
		this.context = context;
		util = new UtilDB(context);
	}

	public List<Integer> leerPersonaXHogarXMarco(int marco_id, String hogar_id) {
		List<Integer> lista = null;
		db = util.getReadableDatabase();
		cursor = db.rawQuery(
				"select * from Persona where marco_id=? and hogar_id=?",
				new String[] { marco_id + "", hogar_id + "" });
		if (cursor.moveToFirst()) {
			lista = new ArrayList<Integer>();
			while (!cursor.isAfterLast()) {
				int persona = cursor
						.getInt(cursor.getColumnIndex("persona_id"));
				lista.add(persona);
				cursor.moveToNext();
			}
		}
		Cerrar();
		return lista;
	}

	public int actualizarListaPersona(List<Integer> lista, int marco_id,
			String hogar_id) {
		int resultado = 0;
		db = util.getWritableDatabase();
		db.beginTransaction();
		resultado = db.delete("Persona", "marco_id=? and hogar_id=?",
				new String[] { marco_id + "", hogar_id + "" });
		if (resultado < 0) {
			Cerrar();
			return resultado;
		}
		for (int i = 0; i < lista.size(); i++) {
			ContentValues valores = new ContentValues();
			valores.put("marco_id", marco_id);
			valores.put("hogar_id", hogar_id);
			valores.put("persona_id", lista.get(i));
			resultado = (int) db.insert("Persona", null, valores);
			if (resultado < 0) {
				Cerrar();
				return resultado;
			}
		}
		if (resultado > 0) {
			db.setTransactionSuccessful();
		}
		Cerrar();
		return resultado;
	}

	private void Cerrar() {
		if (cursor != null) {
			cursor.close();
		}
		if (db.inTransaction()) {
			db.endTransaction();
		}
		db.close();
	}
}
